

var Page = new Class({
  /********************************************
   *											*
   *	Inserire la descrizione della classe	*
   *											*
   ********************************************
   */
  Implements: Options,		//Implementa la classe che gestisce le opzioni

  options: {
    

  },

  initialize : function(options){
    this.setOptions(options)

    /* Imposto le variabili */
    this.url = this.options.url
    this.method = this.options.method
    this.data = this.options.data
    this.target = this.options.target
    this.title = this.options.title
    this.auto = this.options.auto
    this.update = this.options.update
    this.periodical = this.options.periodical
    this.errorMsg = ""
    this.request = null

    /* Controllo le opzioni ed eseguo le azioni */

    if(this.url == null){
      this.errorMsg = this.error(1)
      $(this.target).set('html',this.errorMsg)
    }else{
      this.url += "?xhr=true"
      this.request = this.xhr()
    }
    /* Eseguo il debug */
    console.debug(this)
  },

  getUrl: function(){
    return this.url
  },

  getMethod: function(){
    return this.method
  },

  getData: function(){
    return this.data
  },

  getTarget: function(){
    return this.target
  },

  getTitle: function(){
    return this.title
  },

  getPeriodical: function(){
    return this.periodical
  },


  xhr: function(){
    /*
    Prepara la XHR
    */
    Rurl = this.url
    Rmethod = this.method
    Rtarget = this.target
    request = new Request(
      {
        url: Rurl,
        method: Rmethod,
        update: $(Rtarget),
        onRequest: function(){
        	$('loadStatus').setStyle('visibility','visible')
        },
        onComplete: function(response){
          $(Rtarget).set("html",response)
          $('loadStatus').setStyle('visibility','hidden')
        }
      }
    )
    if(this.auto == true){
      var res = function(){
        request.send()
      }
      /* Invio la richiesta una prima volta */
      res.run()

      /* Se viene passato periodical:0 significa che la richiesta deve essere inviata una sola volta */
      if(this.periodical != 0){
	      res.periodical(this.periodical)
	  }
    }
    return request
  },

  xhrSend: function(){
    /*
    Invia la chiamata XHR
    */
    this.request.send()
    return
  },

  getQueryString: function(){
    /*
    Legge i parametri Get o Post e li inserisce in un array

    */
  },

  setQueryString: function(){
    /*
    Imposta i parametri di invio
    */
  },

  error: function(type){
    switch(type){
      case 1:
        return "Specificare la pagina a cui inviare la richiesta"
      break;
    }
  },

  debug: function(){
    console.debug(this)
  }

})